/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package gui;

import dominio.Aluno;
import dominio.Observacao;
import dominio.PesquisaObservacao;
import java.util.List;
import javax.swing.JOptionPane;
import negocio.Negocio;
import negocio.ObservacaoNegocio;

/**
 *
 * @author IgoMarques
 */
public class ControladorObservacao implements Controlador{

    private Negocio on;

    private JanelaCadastro janelaCadastro;

    private JanelaLista janelaLista;

    private Observacao observacao;

    private Controlador controladorAluno;

    private Aluno aluno;

    public ControladorObservacao(){
        on = new ObservacaoNegocio();
        observacao = new Observacao(aluno);
    }

    public ControladorObservacao(Controlador controladorAluno, Aluno aluno){
        on = new ObservacaoNegocio();
        this.aluno = aluno;
        observacao = new Observacao(aluno);
        this.controladorAluno = controladorAluno;
    }

    /**
     * Método que insere um objeto observacao na camada de negócio e exibe a
     * mensagem de resultado
     */
    public void inserir(){
        observacao.setIdAluno(aluno.getId());
        if(on.inserir(observacao)){
            observacao = new Observacao(aluno);
            janelaCadastro.preparaTela();
        }

        JOptionPane.showMessageDialog(null, on.getMensagem());
    }

    public void alterar(){
        if(on.alterar(observacao)){
            observacao = new Observacao(aluno);
            janelaCadastro.preparaTela();
        }
        JOptionPane.showMessageDialog(null, on.getMensagem());
    }


    public void listar(){
    }

    public void pesquisar(){
        PesquisaObservacao pesquisa = (PesquisaObservacao) this.observacao;
        pesquisa.setIdAluno(aluno.getId());
        List lista = on.pesquisar(pesquisa);
        
        if(lista == null){
            JOptionPane.showMessageDialog(null, on.getMensagem());
        }else{
            janelaLista = new JanelaListaObservacao(this, lista);
            janelaLista.setVisivel(true);
            janelaCadastro.setVisivel(false);
            janelaLista = null;
        }
    }

    public void encerrar(){
        controladorAluno.preparaJanelaCadastro();
    }

    @Override
    public void preparaJanelaCadastro(){
        if(observacao.getClass() == PesquisaObservacao.class){
            observacao = new Observacao(aluno);
        }
        janelaCadastro.preparaTela();
        janelaCadastro.setVisivel(true);
    }

    /**
     * @param janelaCadastro the janelaCadastro to set
     */
    @Override
    public void setJanelaCadastro(JanelaCadastro janelaCadastro) {
        this.janelaCadastro = janelaCadastro;
    }

    /**
     * @return the funcionario
     */
    public Object getObject() {
        return observacao;
    }

    /**
     * @param funcionario the funcionario to set
     */
    public void setObject(Object objeto) {
        this.observacao = (Observacao)objeto;
    }

    public void excluir() {
    }

    public void cadastrarComposicao() {
        throw new UnsupportedOperationException("Not supported yet.");
    }

}

